HPC 클러스터, 8단계로 완벽 구축!
온프레미스 HPC 클러스터 구축을 위한 8단계 가이드라인 제시, 각 단계별 기술적 의존성 및 고려 사항 설명
하드웨어 계획, OS 설정, GPU 드라이버 설치, 스토리지, 스케줄러, 모니터링 등 핵심 구성 요소별 설정 방법 제시
분산 학습 환경에서 특히 중요한 GPU 드라이버 버전 고정, 컨테이너 런타임 분리 등 운영 팁 제공
자동화 도구(Ansible)를 활용한 클러스터 구축 및 관리의 중요성 강조, 코드 기반 인프라(IaC)의 가치 설명
사용자 관리(LDAP 연동) 및 모니터링 시스템 구축을 통해 HPC 클러스터 운영 효율성 극대화 방안 제시
HPC 클러스터 구축 단계별 의존성
본문은 HPC 클러스터 구축을 8단계(Phase)로 나누어 설명하며, 각 단계 간의 기술적 의존성을 강조한다.
Phase 0: 하드웨어 계획(Hardware Planning) 단계로, Compute, Network, Storage의 균형 있는 설계를 통해 GPU 활용률을 극대화
Phase 1: OS 및 시스템 설정(OS and System Configuration) 단계에서는 Munge, 시간 동기화, UID/GID 일관성, 시스템 한도 설정을 통해 안정적인 클러스터 운영 기반 마련
Phase 2: GPU와 컨테이너 런타임(GPU and Container Runtime) 단계에서는 드라이버 버전 고정 및 컨테이너 런타임 분리를 통해 환경 일관성 확보
각 단계는 선행 단계의 성공적인 완료를 전제로 하며, 의존성을 무시하면 디버깅 지옥에 빠질 수 있다고 경고한다.
분산 학습 환경을 위한 하드웨어 설계
분산 학습 환경에서 하드웨어 설계는 GPU 성능만큼 중요하며, 각 요소 간의 균형이 핵심이다.
Compute: GPU, CPU, 메모리, 로컬 디스크 간의 균형을 고려하여 GPU의 유휴 시간을 최소화
Network: 분산 학습 노드 간 통신 속도를 위해 토폴로지(Topology) 및 대역폭(Bandwidth) 설계에 심혈을 기울여야 함
Storage: 노드 수 증가에 따른 I/O 병목 현상을 해결하기 위해 병렬 파일 시스템(Parallel File System) 도입을 고려
하드웨어 계획의 중요성**을 강조하며, 각 구성 요소가 분산 학습 성능에 미치는 영향을 설명한다.
OS 선택 및 시스템 설정의 중요성
OS 선택은 HPC 클러스터 구축의 시작점으로, NVIDIA 드라이버/CUDA 지원, 장기 지원(LTS) 기간, HPC 패키지 생태계, 사내 운영 친숙도 등을 고려해야 한다.
Ubuntu LTS: AI 생태계에서 널리 사용되며, NVIDIA 자료와 커뮤니티 가이드가 풍부
RHEL/Rocky: 엔터프라이즈 표준, 유료 지원, RHEL 호환 무료 배포판
SLES: 일부 슈퍼컴퓨팅 사이트 표준
OS 배포판 혼용 금지**를 강조하며, Munge, 시간 동기화, UID/GID 일관성, 시스템 한도, 커널 파라미터 설정을 통해 시스템 안정성을 확보해야 한다.
GPU 드라이버 버전 고정 및 컨테이너 런타임 분리
GPU 노드에서 드라이버 버전은 하나의 검증된 버전으로 고정하여 노드 간 환경 불일치로 인한 문제를 방지해야 한다.
드라이버 버전 고정: NCCL 성능 저하, 특정 노드 학습 실패 등 디버깅 난이도 증가 방지
컨테이너 런타임 분리: Docker(관리), Enroot/Apptainer(사용자 워크로드)를 분리하여 보안 강화
Slurm 빌드 시 NVML 라이브러리 인식**을 위해 GPU 드라이버 설치 순서를 스케줄러보다 먼저 수행해야 한다.
스케줄러(Slurm) 구축 및 HA 구성
Slurm을 소스에서 빌드할 경우, hwloc → PMIx → Slurm 순서로 빌드해야 하며, PMIx를 먼저 설치하면 PMIx 기반 MPI 학습이 동작하지 않는 문제가 발생한다.
컨트롤러 HA: 공유 StateSaveLocation 기반 HA 구성, 공유 스토리지의 가용성 확보
Accounting DB: slurmdbd는 Slurm과 DB 사이의 통신 데몬일 뿐이며, MariaDB HA는 별도 프로젝트로 분리
Configless 모드: 수십~수백 노드 규모에서 slurm.conf 배포 작업 간소화
HA 구성 시 공유 스토리지의 장애 도메인**까지 고려해야 한다.
자동화(Ansible)를 통한 클러스터 관리
자동화는 HPC 클러스터 구축 및 운영의 필수 요소이며, 코드 기반 인프라(IaC)를 통해 재현 가능성 및 관리 효율성을 높인다.
Ansible: 노드 구성, 패키지 설치, 설정 관리에 활용, 에이전트 불필요, 멱등성, 변경 추적, 검증 가능
자동화 코드의 가치: 코드 = 문서, 멱등성, 변경 추적, 검증 가능
EasyHPC: Ansible 기반의 Slurm 클러스터 자동화 도구, 단계별 구성 요소를 코드 구조에 반영
자동화 코드는 처음부터 완벽할 필요 없이, 점진적인 개선을 통해 완성도를 높여야 한다.